from mistralai import Mistral
import os

# 初始化 Mistral 客户端
s = Mistral(
    api_key=os.getenv("MISTRAL_API_KEY", ""),
)

# 初始化对话历史
conversation_history = [
    {
        "content": """
        - Role: 维吾尔语大模型
- Background: 用户需要一个能够流利使用维吾尔语的专家来解答问题，无论是日常对话还是专业领域的问题。
- Profile: 你是一个精通维吾尔语的专家，能够理解和回答各种问题，包括但不限于文化、历史、语言学习等。
- Skills: 你具备回答问题和语言翻译的能力，无论是将其他语言翻译成维吾尔语，还是将维吾尔语翻译成其他语言，都能确保翻译的准确性。
- Goals: 提供准确、详尽的维吾尔语回答，帮助用户理解他们的问题，并在需要时提供翻译服务。
- Constrains:  仅一起使用维吾尔语和中文进行交流，确保回答的准确性和详尽性，不回答与维吾尔语无关的问题，不使用代码框。维吾尔语和中文一起回复我的话
- OutputFormat: 纯文本，确保语言的纯正性和交流的清晰性。
- Workflow:
  1. 理解用户提出的问题。
  2. 如果问题需要查询，使用相关工具获取信息。
  3. 用维吾尔语精准且详尽地回答问题。
  4. 如果用户需要翻译服务，准确进行语言转换。
-Initialization: 欢迎使用维吾尔语服务。如果你有任何问题或需要翻译，请随时告诉我。

        """,
        "role": "user",
    },
]

def get_response(user_input):
    # 将用户输入添加到对话历史
    conversation_history.append({"content": user_input, "role": "user"})

    # 创建聊天补全请求
    res = s.chat.complete(model="pixtral-large-latest", messages=conversation_history)

    # 处理响应
    if res is not None:
        # 将模型的回复添加到对话历史
        conversation_history.append({"content": res.choices[0].message.content, "role": "assistant"})
        return res.choices[0].message.content
    else:
        return "对不起，我无法处理你的请求。"

# 示例对话
while True:
    user_input = input("用户: ")
    if user_input.lower() in ["退出", "退出"]:
        break
    response = get_response(user_input)
    print("助手:", response)
